/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package utilitarios;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import modelo.ModeloUsuario;

/**
 *
 * @author Bruno
 */
public class ControleUsuarios {
    
        conectaBanco conectaUsuario = new conectaBanco();  
        
        public ModeloUsuario fazLogin(ModeloUsuario usuario){
            conectaUsuario.conexao();
            String sql = "select * from usuarios where nome='"+usuario.getNome()+"' AND senha='"+usuario.getSenha()+"'";
            conectaUsuario.executaSQL(sql);
            try {
            conectaUsuario.rs.first();

            usuario.setNome(conectaUsuario.rs.getString("nome"));
            usuario.setSenha(conectaUsuario.rs.getString("senha"));
            usuario.setId(conectaUsuario.rs.getInt("id"));
            usuario.setStatus(conectaUsuario.rs.getString("status"));

            return usuario;
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Erro ao fazer login:\nERRO"+ex);
                return usuario;
            }
        }
    
        public ArrayList listaCandidatos(ArrayList usuarios){
            usuarios = new ArrayList<>();

            
            conectaUsuario.conexao();
            String sql = "select * from usuarios";
            conectaUsuario.executaSQL(sql);
            try {
    
            conectaUsuario.rs.first();
            do {
                usuarios.add(new Object[]{conectaUsuario.rs.getString("nome")});
            } while (conectaUsuario.rs.next());
            
            return usuarios;
            
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Erro ao fazer login:\nERRO"+ex);
                return usuarios;
            }        
        }
        
        public int descobreID(String nome){
            ModeloUsuario usuario = new ModeloUsuario();
            
            conectaUsuario.conexao();
            String sql = "select * from usuarios where nome='"+nome+"'";
            conectaUsuario.executaSQL(sql);
            try {
                conectaUsuario.rs.first();
                usuario.setId(conectaUsuario.rs.getInt("id"));
                return usuario.getId();
            } catch (SQLException ex) {
                Logger.getLogger(ControleUsuarios.class.getName()).log(Level.SEVERE, null, ex);
                return usuario.getId();
            }
        }
        
        public ArrayList descobreNomes(ArrayList<Integer> ocupados){
            ArrayList disponiveis = new ArrayList();
            boolean disp;
            conectaUsuario.conexao();
            String sql = "select * from usuarios";
            conectaUsuario.executaSQL(sql);
            try {   
            conectaUsuario.rs.first();
            do {
                disp=true;
                int id=conectaUsuario.rs.getInt("id");
                for(int i=0;i<ocupados.size();i++){
                    if(ocupados.get(i)==id){
                        disp=false;
                    }
                }
                if (disp==true){
                    disponiveis.add(new Object[]{conectaUsuario.rs.getString("nome")});
                }
            } while (conectaUsuario.rs.next());
            
            return disponiveis;
            
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Erro ao recuperar nomes do BD:\nERRO"+ex);
                return disponiveis;
            }
        }         
}
